package com.chinasoft04.mall.controller;

import com.chinasoft04.mall.service.AttributeService;
import com.chinasoft04.mall.dto.Attribute;
import com.chinasoft04.mall.dto.Rbody;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@AllArgsConstructor
@RequestMapping("/api/private/v1")
public class AttributeController {

    AttributeService attributeService;

    @GetMapping("/categories/{id}/attributes")
    public Rbody getAttribute(@PathVariable Integer id, String sel) {
        Rbody rbody = new Rbody();
        if (id != null && !sel.isEmpty()) {
            List<Attribute> attribute = attributeService.getAttribute(id, sel);
            if (attribute == null) {
                rbody.getMeta().setStatus(500);
                rbody.getMeta().setMsg("获取失败");
            } else {
                rbody.getMeta().setMsg("获取成功");
                rbody.setData(attribute);
            }
        } else {
            rbody.getMeta().setStatus(400);
            rbody.getMeta().setMsg("参数不能为空");
        }
        return rbody;
    }

    @PostMapping("/categories/{id}/attributes")
    public Rbody addAttribute(@PathVariable Integer id, @RequestBody Attribute attribute) {
        Rbody rbody = new Rbody();
        String attr_name = attribute.getAttr_name();
        String attr_sel = attribute.getAttr_sel();
        if (id != null && !attr_name.isEmpty() && !attr_sel.isEmpty()) {
            attribute.setCat_id(id);
            if (attribute.getAttr_vals() == null)
                attribute.setAttr_vals("");
            Attribute attribute1 = attributeService.addAttribute(attribute);
            if (attribute1 == null) {
                rbody.getMeta().setStatus(500);
                rbody.getMeta().setMsg("创建失败");
            } else {
                rbody.getMeta().setMsg("创建成功");
                rbody.getMeta().setStatus(201);
                rbody.setData(attribute1);
            }
        } else {
            rbody.getMeta().setStatus(400);
            rbody.getMeta().setMsg("参数不能为空");
        }
        System.out.println(attribute);
        return rbody;
    }

    @DeleteMapping("/categories/{id}/attributes/{attrid}")
    public Rbody deleteAttribute(@PathVariable Integer id, @PathVariable Integer attrid){
        Rbody rbody = new Rbody();
        int flag = attributeService.deleteAttribute(id, attrid);
        if (flag == 1){
            rbody.getMeta().setMsg("删除成功");
        }else {
            rbody.getMeta().setStatus(500);
            rbody.getMeta().setMsg("删除失败");
        }
        return rbody;
    }

    @GetMapping("/categories/{id}/attributes/{attrid}")
    public Rbody  getOneAttribute(@PathVariable Integer attrid){
        Rbody rbody = new Rbody();
        Attribute oneAttribute = attributeService.getOneAttribute(attrid);
        if (oneAttribute == null){
            rbody.getMeta().setStatus(500);
            rbody.getMeta().setMsg("获取失败");
        }else {
            rbody.getMeta().setMsg("获取成功");
            rbody.setData(oneAttribute);
        }
        return rbody;
    }

    @PutMapping("/categories/{id}/attributes/{attrid}")
    public Rbody updateAttribute(@PathVariable Integer id, @PathVariable Integer attrid, @RequestBody Attribute attribute){
        Rbody rbody = new Rbody();
        attribute.setAttr_id(attrid);
        attribute.setCat_id(id);
        Attribute attribute1 = attributeService.updateAttribute(attribute);
        if (attribute1 == null){
            rbody.getMeta().setStatus(500);
            rbody.getMeta().setMsg("更新失败");
        }else {
            rbody.getMeta().setMsg("更新成功");
            rbody.setData(attribute1);
        }
        return rbody;
    }
}
